using System.ComponentModel;
using Microsoft.Xna.Framework;

namespace CthulhuDomain.StageManagement
{
  public abstract class MenuCommandFactory
  {
    public enum eTypeFactory
    {
      None = 0,
      Start = 1,
      Exit = 2
    }

    public static MenuCommandFactory GetFactory(eTypeFactory type)
    {
      MenuCommandFactory factory;
      switch (type)
      {
        case eTypeFactory.Start:
          factory = new StartCommandFactory(); break;

        case eTypeFactory.Exit:
          factory = new ExitCommandFactory(); break;

        default:
          throw new InvalidEnumArgumentException();
      }

      return factory;
    }

    public abstract MenuCommand CreateCommand(IGameServiceProvider serviceManager);

  }
}